home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Apple WWDC 1996
/
WWDC96_1996 (CD).toast
/
Technology Materials
/
MacOS 8 Resources
/
Developer Tools
/
Mac OS 8 Interfaces & Libraries
/
Interfaces
/
AIncludes
/
CMICCProfile.a
< prev
next >
Wrap
Text File
|
1996-05-01
|
28KB
|
692 lines
;
; File: CMICCProfile.a
;
; Contains: Definitions for ColorSync 2.0 profile
;
; Version: Technology: ColorSync 2.0
; Release: Universal Interfaces 3.0d3 on Copland DR1
;
; Copyright: © 1984-1996 by Apple Computer, Inc. All rights reserved.
;
; Bugs?: If you find a problem with this file, send the file and version
; information (from above) and the problem description to:
;
; Internet: apple.bugs@applelink.apple.com
; AppleLink: APPLE.BUGS
;
;
IF &TYPE('__CMICCPROFILE__') = 'UNDEFINED' THEN
__CMICCPROFILE__ SET 1
IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
include 'Types.a'
ENDIF
; Current CMProfile.header.profileVersion Major: 2, Minor: 0, Stage: Developement (x20), Prerelease:0x01
cmCS2ProfileVersion EQU $02000000
; Current Major version number
cmCurrentProfileMajorVersion EQU $02000000
; magic cookie number for anonymous file ID
cmMagicNumber EQU 'acsp'
; ColorSync profile version 1.0
cmCS1ProfileVersion EQU $00000100
; **********************************************************************
; ************** ColorSync 2.0 profile specification *******************
; **********************************************************************
; profile flags element values
cmEmbeddedProfile EQU 0 ; 0 is not embedded profile, 1 is embedded profile
cmEmbeddedUse EQU 1 ; 0 is to use anywhere, 1 is to use as embedded profile only
; data type element values
cmAsciiData EQU 0
cmBinaryData EQU 1
; rendering intent element values
cmPerceptual EQU 0 ; Photographic images
cmRelativeColorimetric EQU 1 ; Logo Colors
cmSaturation EQU 2 ; Business graphics
cmAbsoluteColorimetric EQU 3 ; Logo Colors
; speed and quality flag options
cmNormalMode EQU 0 ; it uses the least significent two bits in the high word of flag
cmDraftMode EQU 1 ; it should be evaulated like this: right shift 16 bits first, mask off the
cmBestMode EQU 2 ; high 14 bits, and then compare with the enum to determine the option value
; device/media attributes element values
cmReflective EQU 0 ; 0 is reflective media, 1 is transparency media
cmGlossy EQU 1 ; 0 is glossy, 1 is matte
; screen encodings
cmPrtrDefaultScreens EQU 0 ; Use printer default screens. 0 is false, 1 is ture
cmLinesPer EQU 1 ; 0 is LinesPerCm, 1 is LinesPerInch
; 2.0 tag type information
cmNumHeaderElements EQU 10
; public tags
cmAToB0Tag EQU 'A2B0'
cmAToB1Tag EQU 'A2B1'
cmAToB2Tag EQU 'A2B2'
cmBlueColorantTag EQU 'bXYZ'
cmBlueTRCTag EQU 'bTRC'
cmBToA0Tag EQU 'B2A0'
cmBToA1Tag EQU 'B2A1'
cmBToA2Tag EQU 'B2A2'
cmCalibrationDateTimeTag EQU 'calt'
cmCharTargetTag EQU 'targ'
cmCopyrightTag EQU 'cprt'
cmDeviceMfgDescTag EQU 'dmnd'
cmDeviceModelDescTag EQU 'dmdd'
cmGamutTag EQU 'gamt'
cmGrayTRCTag EQU 'kTRC'
cmGreenColorantTag EQU 'gXYZ'
cmGreenTRCTag EQU 'gTRC'
cmLuminanceTag EQU 'lumi'
cmMeasurementTag EQU 'meas'
cmMediaBlackPointTag EQU 'bkpt'
cmMediaWhitePointTag EQU 'wtpt'
cmNamedColorTag EQU 'ncol'
cmNamedColor2Tag EQU 'ncl2'
cmPreview0Tag EQU 'pre0'
cmPreview1Tag EQU 'pre1'
cmPreview2Tag EQU 'pre2'
cmProfileDescriptionTag EQU 'desc'
cmProfileSequenceDescTag EQU 'pseq'
cmPS2CRD0Tag EQU 'psd0'
cmPS2CRD1Tag EQU 'psd1'
cmPS2CRD2Tag EQU 'psd2'
cmPS2CRD3Tag EQU 'psd3'
cmPS2CSATag EQU 'ps2s'
cmPS2RenderingIntentTag EQU 'ps2i'
cmRedColorantTag EQU 'rXYZ'
cmRedTRCTag EQU 'rTRC'
cmScreeningDescTag EQU 'scrd'
cmScreeningTag EQU 'scrn'
cmTechnologyTag EQU 'tech'
cmUcrBgTag EQU 'bfd '
cmViewingConditionsDescTag EQU 'vued'
cmViewingConditionsTag EQU 'view'
; custom tags
cmPS2CRDVMSizeTag EQU 'psvm'
; technology tag descriptions
cmTechnologyFilmScanner EQU 'fscn'
cmTechnologyReflectiveScanner EQU 'rscn'
cmTechnologyInkJetPrinter EQU 'ijet'
cmTechnologyThermalWaxPrinter EQU 'twax'
cmTechnologyElectrophotographicPrinter EQU 'epho'
cmTechnologyElectrostaticPrinter EQU 'esta'
cmTechnologyDyeSublimationPrinter EQU 'dsub'
cmTechnologyPhotographicPaperPrinter EQU 'rpho'
cmTechnologyFilmWriter EQU 'fprn'
cmTechnologyVideoMonitor EQU 'vidm'
cmTechnologyVideoCamera EQU 'vidc'
cmTechnologyProjectionTelevision EQU 'pjtv'
cmTechnologyCRTDisplay EQU 'CRT '
cmTechnologyPMDisplay EQU 'PMD '
cmTechnologyAMDisplay EQU 'AMD '
cmTechnologyPhotoCD EQU 'KPCD'
cmTechnologyPhotoImageSetter EQU 'imgs'
cmTechnologyGravure EQU 'grav'
cmTechnologyOffsetLithography EQU 'offs'
cmTechnologySilkscreen EQU 'silk'
cmTechnologyFlexography EQU 'flex'
; type signatures
cmSigCurveType EQU 'curv'
cmSigDataType EQU 'data'
cmSigDateTimeType EQU 'dtim'
cmSigLut16Type EQU 'mft2'
cmSigLut8Type EQU 'mft1'
cmSigMeasurementType EQU 'meas'
cmSigNamedColorType EQU 'ncol'
cmSigNamedColor2Type EQU 'ncl2'
cmSigProfileDescriptionType EQU 'desc'
cmSigScreeningType EQU 'scrn'
cmSigS15Fixed16Type EQU 'sf32'
cmSigSignatureType EQU 'sig '
cmSigTextType EQU 'text'
cmSigU16Fixed16Type EQU 'uf32'
cmSigU1Fixed15Type EQU 'uf16'
cmSigUInt32Type EQU 'ui32'
cmSigUInt64Type EQU 'ui64'
cmSigUInt8Type EQU 'ui08'
cmSigViewingConditionsType EQU 'view'
cmSigXYZType EQU 'XYZ '
; Measurement type encodings
; Measurement Flare
cmFlare0 EQU $00000000
cmFlare100 EQU $00000001
; Measurement Geometry
cmGeometryUnknown EQU $00000000
cmGeometry045or450 EQU $00000001
cmGeometry0dord0 EQU $00000002
; Standard Observer
cmStdobsUnknown EQU $00000000
cmStdobs1931TwoDegrees EQU $00000001
cmStdobs1964TenDegrees EQU $00000002
; Standard Illuminant
cmIlluminantUnknown EQU $00000000
cmIlluminantD50 EQU $00000001
cmIlluminantD65 EQU $00000002
cmIlluminantD93 EQU $00000003
cmIlluminantF2 EQU $00000004
cmIlluminantD55 EQU $00000005
cmIlluminantA EQU $00000006
cmIlluminantEquiPower EQU $00000007
cmIlluminantF8 EQU $00000008
; Spot Function Value
cmSpotFunctionUnknown EQU 0
cmSpotFunctionDefault EQU 1
cmSpotFunctionRound EQU 2
cmSpotFunctionDiamond EQU 3
cmSpotFunctionEllipse EQU 4
cmSpotFunctionLine EQU 5
cmSpotFunctionSquare EQU 6
cmSpotFunctionCross EQU 7
; Color Space Signatures
cmXYZData EQU 'XYZ '
cmLabData EQU 'Lab '
cmLuvData EQU 'Luv '
cmYxyData EQU 'Yxy '
cmRGBData EQU 'RGB '
cmGrayData EQU 'GRAY'
cmHSVData EQU 'HSV '
cmHLSData EQU 'HLS '
cmCMYKData EQU 'CMYK'
cmCMYData EQU 'CMY '
cmMCH5Data EQU 'MCH5'
cmMCH6Data EQU 'MCH6'
cmMCH7Data EQU 'MCH7'
cmMCH8Data EQU 'MCH8'
; profileClass enumerations
cmInputClass EQU 'scnr'
cmDisplayClass EQU 'mntr'
cmOutputClass EQU 'prtr'
cmLinkClass EQU 'link'
cmAbstractClass EQU 'abst'
cmColorSpaceClass EQU 'spac'
; platform enumerations
cmMacintosh EQU 'APPL'
cmMicrosoft EQU 'MSFT'
cmSolaris EQU 'SUNW'
cmSiliconGraphics EQU 'SGI '
cmTaligent EQU 'TGNT'
; ColorSync 1.0 elements
cmCS1ChromTag EQU 'chrm'
cmCS1TRCTag EQU 'trc '
cmCS1NameTag EQU 'name'
cmCS1CustTag EQU 'cust'
; General element data types
CMDateTime RECORD 0
year ds.w 1 ; offset: $0 (0)
month ds.w 1 ; offset: $2 (2)
dayOfTheMonth ds.w 1 ; offset: $4 (4)
hours ds.w 1 ; offset: $6 (6)
minutes ds.w 1 ; offset: $8 (8)
seconds ds.w 1 ; offset: $A (10)
sizeof EQU * ; size: $C (12)
ENDR
CMFixedXYZColor RECORD 0
X ds.l 1 ; offset: $0 (0)
Y ds.l 1 ; offset: $4 (4)
Z ds.l 1 ; offset: $8 (8)
sizeof EQU * ; size: $C (12)
ENDR
; typedef unsigned short CMXYZComponent
CMXYZColor RECORD 0
X ds.w 1 ; offset: $0 (0)
Y ds.w 1 ; offset: $2 (2)
Z ds.w 1 ; offset: $4 (4)
sizeof EQU * ; size: $6 (6)
ENDR
CM2Header RECORD 0
size ds.l 1 ; offset: $0 (0) ; This is the total size of the Profile
CMMType ds.l 1 ; offset: $4 (4) ; CMM signature, Registered with CS2 consortium
profileVersion ds.l 1 ; offset: $8 (8) ; Version of CMProfile format
profileClass ds.l 1 ; offset: $C (12) ; input, display, output, devicelink, abstract, or color conversion profile type
dataColorSpace ds.l 1 ; offset: $10 (16) ; color space of data
profileConnectionSpace ds.l 1 ; offset: $14 (20) ; profile connection color space
dateTime ds CMDateTime ; offset: $18 (24) ; date and time of profile creation
CS2profileSignature ds.l 1 ; offset: $24 (36) ; 'acsp' constant ColorSync 2.0 file ID
platform ds.l 1 ; offset: $28 (40) ; primary profile platform, Registered with CS2 consortium
flags ds.l 1 ; offset: $2C (44) ; profile flags
deviceManufacturer ds.l 1 ; offset: $30 (48) ; Registered with ICC consortium
deviceModel ds.l 1 ; offset: $34 (52) ; Registered with ICC consortium
deviceAttributes ds.l 2 ; offset: $38 (56) ; Attributes like paper type
renderingIntent ds.l 1 ; offset: $40 (64) ; preferred rendering intent of tagged object
white ds CMFixedXYZColor ; offset: $44 (68) ; profile illuminant
creator ds.l 1 ; offset: $50 (80) ; profile creator
reserved ds.b 44 ; offset: $54 (84) ; reserved for future use
sizeof EQU * ; size: $80 (128)
ENDR
CMTagRecord RECORD 0
tag ds.l 1 ; offset: $0 (0) ; Registered with CS2 consortium
elementOffset ds.l 1 ; offset: $4 (4) ; Relative to start of CMProfile
elementSize ds.l 1 ; offset: $8 (8)
sizeof EQU * ; size: $C (12)
ENDR
CMTagElemTable RECORD 0
count ds.l 1 ; offset: $0 (0)
tagList ds CMTagRecord ; offset: $4 (4) <-- really an array of length one ; Variable size
sizeof EQU * ; size: $10 (16)
ENDR
; External 0x02002001 CMProfile
CM2Profile RECORD 0
header ds CM2Header ; offset: $0 (0)
tagTable ds CMTagElemTable ; offset: $80 (128)
elemData ds.b 1 ; offset: $90 (144) <-- really an array of length one ; Tagged element storage. Variable size
ORG 146
sizeof EQU * ; size: $92 (146)
ENDR
; typedef struct CM2Profile * CM2ProfilePtr
; typedef CM2ProfilePtr * CM2ProfileHandle
; Tag Type Definitions
CMCurveType RECORD 0
typeDescriptor ds.l 1 ; offset: $0 (0) ; 'curv'
reserved ds.l 1 ; offset: $4 (4) ; fill with 0x00
countValue ds.l 1 ; offset: $8 (8) ; number of entries in table that follows
data ds.w 1 ; offset: $C (12) <-- really an array of length one ; Tagged element storage. Variable size
sizeof EQU * ; size: $E (14)
ENDR
CMDataType RECORD 0
typeDescriptor ds.l 1 ; offset: $0 (0) ; 'data'
reserved ds.l 1 ; offset: $4 (4) ; fill with 0x00
dataFlag ds.l 1 ; offset: $8 (8) ; 0 = ASCII, 1 = binary
data ds.b 1 ; offset: $C (12) <-- really an array of length one ; Tagged element storage. Variable size
ORG 14
sizeof EQU * ; size: $E (14)
ENDR
CMDateTimeType RECORD 0
typeDescriptor ds.l 1 ; offset: $0 (0) ; 'dtim'
reserved ds.l 1 ; offset: $4 (4)
dateTime ds CMDateTime ; offset: $8 (8)
sizeof EQU * ; size: $14 (20)
ENDR
CMLut16Type RECORD 0
typeDescriptor ds.l 1 ; offset: $0 (0) ; 'mft2'
reserved ds.l 1 ; offset: $4 (4) ; fill with 0x00
inputChannels ds.b 1 ; offset: $8 (8) ; Number of input channels
outputChannels ds.b 1 ; offset: $9 (9) ; Number of output channels
gridPoints ds.b 1 ; offset: $A (10) ; Number of clutTable grid points
reserved2 ds.b 1 ; offset: $B (11) ; fill with 0x00
matrix ds.l 3 * 3 ; offset: $C (12) ;
inputTableEntries ds.w 1 ; offset: $30 (48) ;
outputTableEntries ds.w 1 ; offset: $32 (50) ;
inputTable ds.w 1 ; offset: $34 (52) <-- really an array of length one ; Variable size
CLUT ds.w 1 ; offset: $36 (54) <-- really an array of length one ; Variable size
outputTable ds.w 1 ; offset: $38 (56) <-- really an array of length one ; Variable size
sizeof EQU * ; size: $3A (58)
ENDR
CMLut8Type RECORD 0
typeDescriptor ds.l 1 ; offset: $0 (0) ; 'mft1'
reserved ds.l 1 ; offset: $4 (4) ; fill with 0x00
inputChannels ds.b 1 ; offset: $8 (8) ;
outputChannels ds.b 1 ; offset: $9 (9) ;
gridPoints ds.b 1 ; offset: $A (10) ;
reserved2 ds.b 1 ; offset: $B (11) ; fill with 0x00
matrix ds.l 3 * 3 ; offset: $C (12) ;
inputTable ds.b 256 ; offset: $30 (48) ; fixed size of 256
CLUT ds.b 2 ; offset: $130 (304) ; Variable size
outputTable ds.b 256 ; offset: $132 (306) ; fixed size of 256
sizeof EQU * ; size: $232 (562)
ENDR
CMMeasurementType RECORD 0
typeDescriptor ds.l 1 ; offset: $0 (0) ; 'meas'
reserved ds.l 1 ; offset: $4 (4) ; fill with 0x00
standardObserver ds.l 1 ; offset: $8 (8) ; 0 : unknown, 1 : CIE 1931, 2 : CIE 1964
backingXYZ ds CMFixedXYZColor ; offset: $C (12) ; absolute XYZ values of backing
geometry ds.l 1 ; offset: $18 (24) ; 0 : unknown, 1 : 0/45 or 45/0, 2 :0/d or d/0
flare ds.l 1 ; offset: $1C (28) ; 0 : 0%, 1 : 100% flare
illuminant ds.l 1 ; offset: $20 (32) ; standard illuminant
sizeof EQU * ; size: $24 (36)
ENDR
CMNamedColorType RECORD 0
typeDescriptor ds.l 1 ; offset: $0 (0) ; 'ncol'
reserved ds.l 1 ; offset: $4 (4) ; fill with 0x00
vendorFlag ds.l 1 ; offset: $8 (8) ;
count ds.l 1 ; offset: $C (12) ; count of named colors in array that follows
prefixName ds.b 1 ; offset: $10 (16) <-- really an array of length one ; Variable size, max = 32, to access fields after this one, have to count bytes
suffixName ds.b 1 ; offset: $11 (17) <-- really an array of length one ; Variable size, max = 32
data ds.b 1 ; offset: $12 (18) <-- really an array of length one ; varaible size data as explained below
ORG 20
sizeof EQU * ; size: $14 (20)
ENDR
;
; A variable size array of structs appears as the last block of data
; in the above struct, CMNamedColorType. The data structure
; is as follows: (example in C)
;
; struct {
; unsigned char rootName[1]; * Variable size, max = 32
; unsigned char colorCoords[1]; * Variable size
; } colorName[1]; * Variable size
;
CMNamedColor2Type RECORD 0
typeDescriptor ds.l 1 ; offset: $0 (0) ; 'ncl2'
reserved ds.l 1 ; offset: $4 (4) ; fill with 0x00
vendorFlag ds.l 1 ; offset: $8 (8) ; lower 16 bits reserved for ICC use
count ds.l 1 ; offset: $C (12) ; count of named colors in array that follows
deviceChannelCount ds.l 1 ; offset: $10 (16) ; number of device channels, 0 indicates no device value available
prefixName ds.b 32 ; offset: $14 (20) ; 32 byte field. 7 bit ASCII null terminated
suffixName ds.b 32 ; offset: $34 (52) ; 32 byte field. 7 bit ASCII null terminated
data ds.b 1 ; offset: $54 (84) <-- really an array of length one ; varaible size data as explained below
ORG 86
sizeof EQU * ; size: $56 (86)
ENDR
;
; A variable size array of structs appears as the last block of data
; in the above struct, CMNamedColor2Type. The data structure
; is as follows: (example in C)
;
; struct {
; unsigned char rootName[1]; * 32 byte field. 7 bit ASCII null terminated
; unsigned char PCSColorCoords[1]; * Variable size
; unsigned char DeviceColorCoords[1]; * Variable size
; } colorName2[1]; * Variable size
;
CMTextDescriptionType RECORD 0
typeDescriptor ds.l 1 ; offset: $0 (0) ; 'desc'
reserved ds.l 1 ; offset: $4 (4) ; fill with 0x00
ASCIICount ds.l 1 ; offset: $8 (8) ; the count of "bytes"
ASCIIName ds.b 2 ; offset: $C (12) ; Variable size, to access fields after this one, have to count bytes
UniCodeCode ds.l 1 ; offset: $E (14)
UniCodeCount ds.l 1 ; offset: $12 (18) ; the count of characters, each character has two bytes
UniCodeName ds.b 2 ; offset: $16 (22) ; Variable size
ScriptCodeCode ds.w 1 ; offset: $18 (24)
ScriptCodeCount ds.b 1 ; offset: $1A (26) ; the count of "bytes"
ORG 28
ScriptCodeName ds.b 2 ; offset: $1C (28) ; Variable size
sizeof EQU * ; size: $1E (30)
ENDR
CMTextType RECORD 0
typeDescriptor ds.l 1 ; offset: $0 (0) ; 'text'
reserved ds.l 1 ; offset: $4 (4) ; fill with 0x00
text ds.b 1 ; offset: $8 (8) <-- really an array of length one ; count of text is obtained from tag size element
ORG 10
sizeof EQU * ; size: $A (10)
ENDR
CMScreeningType RECORD 0
typeDescriptor ds.l 1 ; offset: $0 (0) ; 'scrn'
reserved ds.l 1 ; offset: $4 (4) ; fill with 0x00
screeningFlag ds.l 1 ; offset: $8 (8) ; bit 0 : use printer default screens, bit 1 : inch/cm
channelCount ds.l 1 ; offset: $C (12)
data ds.b 1 ; offset: $10 (16) <-- really an array of length one ; varaible size data as explained below
ORG 18
sizeof EQU * ; size: $12 (18)
ENDR
;
; A variable size array of structs appears as the last block of data
; in the above struct, CMScreeningType. The data structure
; is as follows: (example in C)
;
; struct {
; Fixed frequency;
; Fixed angle;
; unsigned long sportFunction;
; } channelScreening[1]; * Variable size
;
CMSignatureType RECORD 0
typeDescriptor ds.l 1 ; offset: $0 (0) ; 'sig '
reserved ds.l 1 ; offset: $4 (4) ; fill with 0x00
signature ds.l 1 ; offset: $8 (8)
sizeof EQU * ; size: $C (12)
ENDR
CMS15Fixed16ArrayType RECORD 0
typeDescriptor ds.l 1 ; offset: $0 (0) ; 'sf32'
reserved ds.l 1 ; offset: $4 (4) ; fill with 0x00
value ds.l 1 ; offset: $8 (8) <-- really an array of length one ; Variable size
sizeof EQU * ; size: $C (12)
ENDR
CMU16Fixed16ArrayType RECORD 0
typeDescriptor ds.l 1 ; offset: $0 (0) ; 'uf32'
reserved ds.l 1 ; offset: $4 (4) ; fill with 0x00
value ds.l 1 ; offset: $8 (8) <-- really an array of length one ; Variable size
sizeof EQU * ; size: $C (12)
ENDR
CMUInt16ArrayType RECORD 0
typeDescriptor ds.l 1 ; offset: $0 (0) ; 'ui16'
reserved ds.l 1 ; offset: $4 (4) ; fill with 0x00
value ds.w 1 ; offset: $8 (8) <-- really an array of length one ; Variable size
sizeof EQU * ; size: $A (10)
ENDR
CMUInt32ArrayType RECORD 0
typeDescriptor ds.l 1 ; offset: $0 (0) ; 'ui32'
reserved ds.l 1 ; offset: $4 (4) ; fill with 0x00
value ds.l 1 ; offset: $8 (8) <-- really an array of length one ; Variable size
sizeof EQU * ; size: $C (12)
ENDR
CMUInt64ArrayType RECORD 0
typeDescriptor ds.l 1 ; offset: $0 (0) ; 'ui64'
reserved ds.l 1 ; offset: $4 (4) ; fill with 0x00
value ds.l 1 ; offset: $8 (8) <-- really an array of length one ; Variable size (x2)
sizeof EQU * ; size: $C (12)
ENDR
CMUInt8ArrayType RECORD 0
typeDescriptor ds.l 1 ; offset: $0 (0) ; 'ui08'
reserved ds.l 1 ; offset: $4 (4) ; fill with 0x00
value ds.b 1 ; offset: $8 (8) <-- really an array of length one ; Variable size
ORG 10
sizeof EQU * ; size: $A (10)
ENDR
CMViewingConditionsType RECORD 0
typeDescriptor ds.l 1 ; offset: $0 (0) ; 'view'
reserved ds.l 1 ; offset: $4 (4) ; fill with 0x00
illuminant ds CMFixedXYZColor ; offset: $8 (8) ; absolute XYZs of illuminant in cd/m^2
surround ds CMFixedXYZColor ; offset: $14 (20) ; absolute XYZs of surround in cd/m^2
stdIlluminant ds.l 1 ; offset: $20 (32) ; see definitions of std illuminants
sizeof EQU * ; size: $24 (36)
ENDR
CMXYZType RECORD 0
typeDescriptor ds.l 1 ; offset: $0 (0) ; 'XYZ '
reserved ds.l 1 ; offset: $4 (4) ; fill with 0x00
XYZ ds CMFixedXYZColor ; offset: $8 (8) <-- really an array of length one ; variable size XYZ tristimulus values
sizeof EQU * ; size: $14 (20)
ENDR
; Profile sequence description type
CMProfileSequenceDescType RECORD 0
typeDescriptor ds.l 1 ; offset: $0 (0) ; 'pseq '
reserved ds.l 1 ; offset: $4 (4) ; fill with 0x00
count ds.l 1 ; offset: $8 (8) ; Number of descriptions
data ds.b 1 ; offset: $C (12) <-- really an array of length one ; varaible size data as explained below
ORG 14
sizeof EQU * ; size: $E (14)
ENDR
;
; A variable size array of structs appears as the last block of data
; in the above struct, CMProfileSequenceDescType. The data structure
; is as follows: (example in C)
;
; struct {
; OSType deviceMfg; * Device Manufacturer
; OSType deviceModel; * Decvice Model
; unsigned long attributes[2]; * Device attributes
; OSType technology; * Technology signature
; unsigned long mfgDescASCIICount; * the count of "bytes"
; unsigned char mfgDescASCIIName[2]; * Variable size
; unsigned long mfgDescUniCodeCode;
; unsigned long mfgDescUniCodeCount; * the count of characters, each character has two bytes
; unsigned char mfgDescUniCodeName[2]; * Variable size
; unsigned long mfgDescScriptCodeCode;
; unsigned long mfgDescScriptCodeCount; * the count of "bytes"
; unsigned char mfgDescScriptCodeName[2]; * Variable size
; unsigned long modelDescASCIICount; * the count of "bytes"
; unsigned char modelDescASCIIName[2]; * Variable size
; unsigned long modelDescUniCodeCode;
; unsigned long modelDescUniCodeCount; * the count of characters, each character has two bytes
; unsigned char modelDescUniCodeName[2]; * Variable size
; short modelDescScriptCodeCode;
; unsigned char modelDescScriptCodeCount; * the count of "bytes"
; SInt8 filler; * For proper alignment across languages
; unsigned char modelDescScriptCodeName[2]; * Variable size
; } profileDescription[1];
;
; Under color removal, black generation type
CMUcrBgType RECORD 0
typeDescriptor ds.l 1 ; offset: $0 (0) ; 'bfd '
reserved ds.l 1 ; offset: $4 (4) ; fill with 0x00
ucrCount ds.l 1 ; offset: $8 (8) ; Number of UCR entries
ucrValues ds.w 1 ; offset: $C (12) <-- really an array of length one ; variable size
bgCount ds.l 1 ; offset: $E (14) ; Number of BG entries
bgValues ds.w 1 ; offset: $12 (18) <-- really an array of length one ; variable size
ucrbgASCII ds.b 1 ; offset: $14 (20) <-- really an array of length one ; null terminated ASCII string
ORG 22
sizeof EQU * ; size: $16 (22)
ENDR
CMIntentCRDVMSize RECORD 0
renderingIntent ds.l 1 ; offset: $0 (0) ; rendering intent
VMSize ds.l 1 ; offset: $4 (4) ; VM size taken up by the CRD
sizeof EQU * ; size: $8 (8)
ENDR
CMPS2CRDVMSizeType RECORD 0
typeDescriptor ds.l 1 ; offset: $0 (0) ; 'psvm'
reserved ds.l 1 ; offset: $4 (4) ; fill with 0x00
count ds.l 1 ; offset: $8 (8) ; number of intent entries
intentCRD ds CMIntentCRDVMSize ; offset: $C (12) <-- really an array of length one ; variable size
sizeof EQU * ; size: $14 (20)
ENDR
; **********************************************************************
; ************** ColorSync 1.0 profile specification *******************
; **********************************************************************
cmGrayResponse EQU 0
cmRedResponse EQU 1
cmGreenResponse EQU 2
cmBlueResponse EQU 3
cmCyanResponse EQU 4
cmMagentaResponse EQU 5
cmYellowResponse EQU 6
cmUcrResponse EQU 7
cmBgResponse EQU 8
cmOnePlusLastResponse EQU 9
; Device types
cmMonitorDevice EQU 'mntr'
cmScannerDevice EQU 'scnr'
cmPrinterDevice EQU 'prtr'
CMIString RECORD 0
theScript ds.w 1 ; offset: $0 (0)
theString ds Str63 ; offset: $2 (2)
sizeof EQU * ; size: $42 (66)
ENDR
; Profile options
cmPerceptualMatch EQU $0000 ; Default. For photographic images
cmColorimetricMatch EQU $0001 ; Exact matching when possible
cmSaturationMatch EQU $0002 ; For solid colors
; Profile flags
cmNativeMatchingPreferred EQU $00000001 ; Default to native not preferred
cmTurnOffCache EQU $00000002 ; Default to turn on CMM cache
; typedef long CMMatchOption
; typedef long CMMatchFlag
CMHeader RECORD 0
size ds.l 1 ; offset: $0 (0)
CMMType ds.l 1 ; offset: $4 (4)
applProfileVersion ds.l 1 ; offset: $8 (8)
dataType ds.l 1 ; offset: $C (12)
deviceType ds.l 1 ; offset: $10 (16)
deviceManufacturer ds.l 1 ; offset: $14 (20)
deviceModel ds.l 1 ; offset: $18 (24)
deviceAttributes ds.l 2 ; offset: $1C (28)
profileNameOffset ds.l 1 ; offset: $24 (36)
customDataOffset ds.l 1 ; offset: $28 (40)
flags ds.l 1 ; offset: $2C (44)
options ds.l 1 ; offset: $30 (48)
white ds CMXYZColor ; offset: $34 (52)
black ds CMXYZColor ; offset: $3A (58)
sizeof EQU * ; size: $40 (64)
ENDR
CMProfileChromaticities RECORD 0
red ds CMXYZColor ; offset: $0 (0)
green ds CMXYZColor ; offset: $6 (6)
blue ds CMXYZColor ; offset: $C (12)
cyan ds CMXYZColor ; offset: $12 (18)
magenta ds CMXYZColor ; offset: $18 (24)
yellow ds CMXYZColor ; offset: $1E (30)
sizeof EQU * ; size: $24 (36)
ENDR
CMProfileResponse RECORD 0
counts ds.w 9 ; offset: $0 (0)
data ds.w 1 ; offset: $12 (18) <-- really an array of length one ; Variable size
sizeof EQU * ; size: $14 (20)
ENDR
CMProfile RECORD 0
header ds CMHeader ; offset: $0 (0)
profile ds CMProfileChromaticities ; offset: $40 (64)
response ds CMProfileResponse ; offset: $64 (100)
profileName ds CMIString ; offset: $78 (120)
customData ds.b 1 ; offset: $BA (186) <-- really an array of length one ; Variable size
ORG 188
sizeof EQU * ; size: $BC (188)
ENDR
; typedef struct CMProfile * CMProfilePtr
; typedef CMProfilePtr * CMProfileHandle
IF OLDROUTINENAMES THEN
kCMApplProfileVersion EQU $00000100
grayResponse EQU 0
redResponse EQU 1
greenResponse EQU 2
blueResponse EQU 3
cyanResponse EQU 4
magentaResponse EQU 5
yellowResponse EQU 6
ucrResponse EQU 7
bgResponse EQU 8
onePlusLastResponse EQU 9
rgbData EQU 'RGB '
cmykData EQU 'CMYK'
grayData EQU 'GRAY'
xyzData EQU 'XYZ '
monitorDevice EQU 'mntr'
scannerDevice EQU 'scnr'
printerDevice EQU 'prtr'
; typedef unsigned short XYZComponent
XYZColor RECORD 0
f ds CMXYZColor
sizeof EQU * ; size: $6 (6)
ENDR
; typedef unsigned short CMResponseData
IString RECORD 0
f ds CMIString
sizeof EQU * ; size: $42 (66)
ENDR
; typedef long CMResponseColor
; typedef CMResponseColor responseColor
ENDIF
ENDIF ; __CMICCPROFILE__